import math

from common.params import SoftParams

# 先计算仪器受到的大气压强力：
# 仪器上端受力F_up=P_a×0.1×10^6×(A_1-A_2)，L_1≤d≤D
def get_instrument_up(params: SoftParams)-> float:
    # 仪器的截面积A1
    A1 = params.A1
    # 电缆的截面积A2
    A2 = params.A2
    # 大气压力
    P_a = params.P_atm
    if P_a == 0:
        return 0
    res: float = P_a * 0.1 * math.pow(10, 6) * (A1 - A2)
    return res

# 仪器下端受力F_down=P_a×0.1×10^6×A_1，L_1≤d≤D
def get_instrument_down(params: SoftParams)-> float:
    # 仪器的截面积A1
    A1 = params.A1
    # 大气压力
    P_a = params.P_atm
    if P_a == 0:
        return 0
    res: float = P_a * 0.1 * math.pow(10, 6) * A1
    return res

# 电缆受力F_cable=P_a×0.1×10^6×A_1，L_1≤d≤D
def get_cable(params: SoftParams)-> float:
    # 电缆的截面积A2
    A2 = params.A2
    # 大气压力
    P_a = params.P_atm
    if P_a == 0:
        return 0
    res: float = P_a * 0.1 * math.pow(10, 6) * A2
    return res


# 考虑大气压力后，每1m电缆所受到的伸长量影响：∆leff=(F_up-F_down)/(E2*A2)
def get_delta_leff(params: SoftParams)-> float:
    P_a = params.P_atm
    if P_a == 0:
        return 0
    F_up = get_instrument_up(params)
    F_down = get_instrument_down(params)
    E2 = params.E2
    A2 = params.A2
    # 大气压力
    res: float = (F_up - F_down) / (E2 * A2)
    return res
